Embodiments of the invention are related to the provision of telecommunication services, and in particular, to the provision of application levels of service over a network.
Many typical networks, including the Internet, may be configured as “best effort” networks. In a best effort network, each packet of information may be given substantially equal priority, such that the network may make a best effort to transmit each packet, regardless of the application from which the packet originates. This may allow a network to remain neutral to and compatible with any potential applications with which it may be used.
One result of using “best effort” protocols may be that applications may effectively “hog” limited bandwidth resources by sending and/or receiving large numbers of packets over the network. This may starve other applications of bandwidth, thereby preventing those other applications from running as desired. For example, voice over internet protocol (“VoIP”) services may not run reliably while bandwidth-hogging applications (e.g., massively multiplayer online games, certain file sharing applications, etc.) are running over the same network.
Some network components (e.g., routers, residential gateways, and modems) attempt to provide certain applications minimum levels of service by allowing port-level configurations. In certain components, specific ports may be designated to send and/or receive certain types of packets and to prioritize those packets, such that a minimum level of service is maintained for those packets where possible. For example, a logical port on a router may be configured to send and receive VoIP packets with a very high priority. In this way, the router may attempt to establish a minimum level of service to VoIP packets, thereby indirectly attempting to establish a minimum level of service to any applications that send and/or receive VoIP packets.
While port-level configuration may help provide levels of service to certain types of packets, its effectiveness may be limited. One potential limit to the effectiveness of port-level configuration is that users may wish to give different levels of service to different applications using similar types of packets. If the port is configured only to detect that type of packet, there may be no way for the port to discriminate at the application level.
Another potential limit to the effectiveness of port-level configuration is that applications may easily “spoof” a network to exploit the configuration without the consent of a user. For example, massively multiplayer online games may use large amounts of bandwidth, even while the game does not appear to be running, to execute heuristics to predict future player movements, to update the game with networked information from other players and systems, to preload graphics and/or audio, etc. The game may then query a router configuration, determine that VoIP packets are being given high priority, and configure its packets to look like those high-priority VoIP packets. In this way, game traffic may look to the network like VoIP traffic, potentially starving actual VoIP traffic of bandwidth.
As such, there may be a general need in the art for providing reliable minimum application levels of service to network users.